from devicetest.aw.OpenHarmony import CommonOH
from devicetest.core.test_case import TestCase, Step
from devicetest.log.logger import print_info

from aw.common import common_setup, common_teardown
from aw.pom import Camera


class PreTest_RK3568_Multimedia_Camera_0300(TestCase, Camera):
    # 预置条件：
    # 烧写目标版本后，正常进入桌面-相机应用
    # 测试步骤：
    # 1.进入桌面-相机应用，选择录制模式
    # 2.点击录制按钮，开始录制
    # 3.点击结束按钮，结束录制
    # 4.点击左下角缩略图跳转，点击视频播放
    # 预期结果：
    # 1.录制模式显示正常
    # 2.录制开始，可正常录制视频
    # 3.结束录制，自动保存到相册
    # 4.点击缩略图正常跳转，且播放无异常

    def __init__(self, controllers):
        self.TAG = self.__class__.__name__
        TestCase.__init__(self, self.TAG, controllers)

    def setup(self):
        common_setup(self.Phone1)

    def process(self):
        Step('步骤1：进入桌面-相机应用，选择录制模式')
        CommonOH.startAbility(self.Phone1, self.ability_name, self.bundle_name)
        CommonOH.wait(self.Phone1, 5)
        CommonOH.click(self.Phone1, **self.video_mode)
        Step('预期结果1：录制模式显示正常')
        CommonOH.checkIfTextExist(self.Phone1, '录像')
        Step('步骤2：点击录制按钮，开始录制')
        CommonOH.click(self.Phone1, **self.shot_button)
        CommonOH.wait(self.Phone1, 5)
        Step('预期结果2：录制开始，可正常录制视频')
        CommonOH.checkIfTextExist(self.Phone1, '00:', pattern="CONTAINS")
        Step('步骤3：点击结束按钮，结束录制')
        CommonOH.click(self.Phone1, **self.end_recoding)
        CommonOH.wait(self.Phone1, 2)
        Step('预期结果3：结束录制')
        CommonOH.checkIfTextExist(self.Phone1, '录像')
        Step('步骤4：点击左下角缩略图跳转，点击视频播放')
        CommonOH.click(self.Phone1, **self.thumbnail)
        CommonOH.wait(self.Phone1, 3)
        Step('预期结果4：点击缩略图正常跳转，且播放无异常')
        CommonOH.checkIfTextExist(self.Phone1, '收藏')
        CommonOH.isProcessRunning(self.Phone1, 'com.ohos.photos')
        print_info('点击播放')
        CommonOH.click(self.Phone1, **self.play_video)
        CommonOH.wait(self.Phone1, 2)
        CommonOH.checkIfTextExist(self.Phone1, '收藏', expect=False)
        CommonOH.isProcessRunning(self.Phone1, 'com.ohos.photos')

    def teardown(self):
        common_teardown(self.Phone1, self.bundle_name)
